package com.yilin.tms.core.entity.gps.hyb;

import com.yilin.tms.core.entity.order.transit.TransitOrderNote;
import jnr.ffi.annotations.In;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 电子围栏配置信息
 * */
public class FenceInfoDTO implements Serializable {
    private Long triggerTime;//触发时间: 类型为unix时间戳(毫秒
    private Integer fenceType;//		是	1	围栏类型: 1 装货围栏 3 卸货围栏
    private String address;//			是	北京市海淀区中关村清华科技园1号楼	地址: 省市区标准库地址
    private Float longitude;//		是	123.456	地址经度：-180~180
    private Float latitude;//			是	31.345	地址纬度：-85~85
    private String divisionCode;//			否	110000	行政区划编码；如配置了自动SDK上报，则为必填；行政编码为六位数字
    private Integer triggerScope;//		Integer	否	1000	围栏范围: 单位米；默认设置1000m
    private Integer notify;//	否	1	触发推送: 1 开启 0 关闭，默认开启
    private Integer sdk;//否	0	交通SDK自动上报: 1 开启 0 关闭，默认关闭

    public static FenceInfoDTO genLoadingByTransitOrderNote(TransitOrderNote transitOrderNote, Integer electronicFenceRange){
        FenceInfoDTO orFenceInfo = new FenceInfoDTO();
        String[] consignorCoordinate = transitOrderNote.getConsignorCoordinate().split(",");
        orFenceInfo.setFenceType(1);//是	北京市海淀区中关村清华科技园1号楼	地址: 省市区标准库地址
        orFenceInfo.setAddress(transitOrderNote.getConsignorArea()+transitOrderNote.getConsignorAddress());//
        orFenceInfo.setLongitude(Float.parseFloat(consignorCoordinate[0]));//是	123.456	地址经度：-180~180
        orFenceInfo.setLatitude(Float.parseFloat(consignorCoordinate[1]));//是	31.345	地址纬度：-85~85
        orFenceInfo.setDivisionCode(transitOrderNote.getConsignorAdCode());//否	110000	行政区划编码；如配置了自动SDK上报，则为必填；行政编码为六位数字
        orFenceInfo.setTriggerScope(electronicFenceRange);//Integer	否	1000	围栏范围: 单位米；默认设置1000m
        orFenceInfo.setNotify(1);//否	1	触发推送: 1 开启 0 关闭，默认开启
        orFenceInfo.setSdk(1);//否	0	交通SDK自动上报: 1 开启 0 关闭，默认关闭
        return orFenceInfo;
    }

    public static FenceInfoDTO genReceiptByTransitOrderNote(TransitOrderNote transitOrderNote, Integer electronicFenceRange){
        FenceInfoDTO eeFenceInfo = new FenceInfoDTO();
        String[] consigneeCoordinate = transitOrderNote.getConsigneeCoordinate().split(",");
        eeFenceInfo.setFenceType(3);//是	北京市海淀区中关村清华科技园1号楼	地址: 省市区标准库地址
        eeFenceInfo.setAddress(transitOrderNote.getConsigneeArea()+transitOrderNote.getConsigneeAddress());//
        eeFenceInfo.setLongitude(Float.parseFloat(consigneeCoordinate[0]));//是	123.456	地址经度：-180~180
        eeFenceInfo.setLatitude(Float.parseFloat(consigneeCoordinate[1]));//是	31.345	地址纬度：-85~85
        eeFenceInfo.setDivisionCode(transitOrderNote.getConsigneeAdCode());//否	110000	行政区划编码；如配置了自动SDK上报，则为必填；行政编码为六位数字
        eeFenceInfo.setTriggerScope(electronicFenceRange);//Integer	否	1000	围栏范围: 单位米；默认设置1000m
        eeFenceInfo.setNotify(1);//否	1	触发推送: 1 开启 0 关闭，默认开启
        eeFenceInfo.setSdk(1);//否	0	交通SDK自动上报: 1 开启 0 关闭，默认关闭
        return eeFenceInfo;
    }

    public Long getTriggerTime() {
        return triggerTime;
    }

    public void setTriggerTime(Long triggerTime) {
        this.triggerTime = triggerTime;
    }

    public Integer getFenceType() {
        return fenceType;
    }

    public void setFenceType(Integer fenceType) {
        this.fenceType = fenceType;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Float getLongitude() {
        return longitude;
    }

    public void setLongitude(Float longitude) {
        this.longitude = longitude;
    }

    public Float getLatitude() {
        return latitude;
    }

    public void setLatitude(Float latitude) {
        this.latitude = latitude;
    }

    public String getDivisionCode() {
        return divisionCode;
    }

    public void setDivisionCode(String divisionCode) {
        this.divisionCode = divisionCode;
    }

    public Integer getTriggerScope() {
        return triggerScope;
    }

    public void setTriggerScope(Integer triggerScope) {
        this.triggerScope = triggerScope;
    }

    public Integer getNotify() {
        return notify;
    }

    public void setNotify(Integer notify) {
        this.notify = notify;
    }

    public Integer getSdk() {
        return sdk;
    }

    public void setSdk(Integer sdk) {
        this.sdk = sdk;
    }
}
